How Blitz scaled their game coaching app with lower latency and leaner operations यह एक तेजी से बढ़ती स्टार्टअप है जो लीग ऑफ लेगन्स, Valorant, और Fortnite जैसे गेमों के लिए व्यक्तिगत कोचिंग प्रदान करती है. वे वास्तविक समय अंतर्दृष्टि और मैच के बाद विश्लेषण के माध्यम से गेमर्स को लीग ऑफ लेगन्स मिसाल बनने में मदद करना चाहते हैं. चमक जबकि खिलाड़ी खेलते हैं, ऐप काफी काम करता है. यह लाइव मैच डेटा कैप्चर करता है, इसे त्वरित रूप से विश्लेषण करता है, और इसे वास्तविक समय में गेम स्क्रीन पर कवर करने के लिए उपयोग करता है, साथ ही साथ गेम के बाद व्यक्तिगत कोचिंग। Blitz के लोकप्रिय आंकड़ों और गेम कोचिंग ऐप के बढ़ते जागरूकता के लिए धन्यवाद, उनके लगातार बढ़ते उपयोगकर्ता आधार ने अपने मूल Postgres- और Elixir-आधारित आर्किटेक्चर को अपनी सीमाओं तक धक्का दिया। - अपने बढ़ते उपयोगकर्ता आधार को कम लाटेन, उच्च उपलब्धता और क्षैतिज स्केलेबलता प्रदान करने के लिए, वे अंततः: TL;DR Elixir से Rust तक बैकेंड सेवाओं को स्थानांतरित किया गया। Postgres को ScyllaDB Cloud द्वारा प्रतिस्थापित किया गया है। उनके रैली के निशान को काफी कम कर दिया। उनके रैक क्लस्टर को हटा दिया। रियल टाइम प्रोसेसिंग के साथ रैक प्रोसेसिंग को प्रतिस्थापित किया गया है। एक सौ से अधिक microservices कोर से चार n4-standard-4 Google Cloud नोड्स तक की एकीकृत बुनियादी ढांचे (और एक छोटे से Redis एज कैशिंग के लिए) एक अतिरिक्त बोनस के रूप में, इन परिवर्तनों ने ब्लिट्ज़ के बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी बुनियादी है। Blitz पृष्ठभूमि जैसा कि नाविड कैन (ब्लिट्ज़ में इंजीनियरिंग के प्रमुख) ने समझाया, "हम गेम प्रकाशनकों से और गेमप्ले के दौरान बहुत सारे डेटा एकत्र करते हैं. उदाहरण के लिए, यदि आप लीग ऑफ लेगन्स खेल रहे हैं, तो हम रिओट के एपीआई का उपयोग मैच डेटा खींचने के लिए करते हैं, और यदि आप हमारी ऐप स्थापित करते हैं, तो हम वास्तविक समय में गेमप्ले की निगरानी करते हैं. यह सभी डेटा प्रारंभिक प्रसंस्करण के लिए हमारे ट्रांजेक्शन डेटाबेस में संग्रहीत होता है, और इसका अधिकांश अंततः हमारे डेटा झील में समाप्त होता है। पिछली पोस्टरों को छेड़छाड़ ब्लिट्ज़ के सिस्टम का एक महत्वपूर्ण हिस्सा प्लेस्टाइल एपीआई है, जो टीम के साथियों और प्रतिद्वंद्वी दोनों के लिए प्री गेम डेटा का विश्लेषण करता है. यह गहन प्रक्रिया प्रति खिलाड़ी 20 मैचों तक का मूल्यांकन करती है और प्रति गेम प्रति नौ अलग-अलग बार चलती है (मैच में प्रत्येक खिलाड़ी के लिए एक बार)। टीम ने रणनीतिक रूप से कई माइक्रोसेस को सुधारने के लिए पुनर्निर्मित और एकीकृत किया. लेकिन डेटा की मात्रा तीव्र रह गई. ब्रायन मोरिन (ब्लिट्ज़ के मुख्य बैकेंड इंजीनियर) के अनुसार, "इस पूछताछ की मात्रा को संभालने में सक्षम एक डेटाबेस समाधान खोजना महत्वपूर्ण था। उन्होंने शुरुआत में Postgres का उपयोग किया, जो उन्हें पहले से ही अच्छी तरह से काम करता था. हालांकि, जैसा कि उनके लिखने के लिए भारी कार्य भार बढ़ते थे, Google क्लाउड पर ऑपरेटिंग जटिलता और लागतों में काफी वृद्धि हुई. इसके अलावा, Postgres का स्केलिंग काफी जटिल हो गया. नेविड ने साझा किया, “हमने स्केलिंग करने के लिए सभी प्रकार की चीजों की कोशिश की। चूंकि स्टार्टअप स्केल करते हैं, वे अक्सर "केवल Postgres का उपयोग करें" से "केवल NoSQL का उपयोग करें" में स्विच करते हैं। उचित रूप से, ब्लिज़ टीम ने MongoDB पर जाने पर विचार किया, लेकिन अंततः इसे बाहर कर दिया। "हमने टीम में बहुत सारे MongoDB अनुभव थे और हम में से कुछ को यह वास्तव में पसंद आया। उनके विशिष्ट कार्य भार और अपेक्षित विकास के लिए एक बोतल काट देगा। MongoDB के प्राथमिक और माध्यमिक आर्किटेक्चर परीक्षणों ने दिखाया कि यह उनकी लाटेनरी आवश्यकताओं को पूरा करेगा, इसलिए उन्होंने आवश्यक डेटा (रे) मॉडलिंग किया और Postgres से RocksDB में कुछ छोटे गेमों को स्थानांतरित किया। हालांकि, वे अंततः स्केल और उच्च उपलब्धता चिंताओं के कारण RocksDB के खिलाफ फैसला किया। क्यों ScyllaDB उनके बैकेंड इंजीनियरों में से एक ने ScyllaDB की सिफारिश की, इसलिए उन्होंने संपर्क किया और अवधारणा का एक सबूत चलाया. वे मुख्य रूप से एक समाधान की तलाश कर रहे थे जो लिखित पारगमन को संभाल सकता है, क्षैतिज रूप से स्केल करता है, और उच्च उपलब्धता प्रदान करता है. उन्होंने इसे पहले अपने हार्डवेयर पर परीक्षण किया, फिर ScyllaDB क्लाउड में स्थानांतरित किया। Naveed के अनुसार, " लागत स्व-होस्टिंग के काफी करीब थी, और हमने पूरी तरह से मुफ्त में प्रबंधन प्राप्त किया, इसलिए यह एक न-ब्रेनर था। प्रदर्शन के दृष्टिकोण में, स्विच ने उपयोगकर्ता अनुभव को स्तरित करने के अपने लक्ष्य को पूरा किया ... और उनके इंजीनियरिंग टीमों के लिए जीवन को सरल बनाया। ब्रायन ने कहा, "स्काइलडाब विशेष रूप से प्रदर्शन के साथ शक्तिशाली प्रदर्शन प्रदान करने के लिए प्रदर्शित किया गया है, जो अनुकूलन के बाद बचत करने की क्षमता प्रदान करता है। हमारे लीग उत्पाद लगभग 5k ऑप्शन / सेकंड के साथ क्लस्टर रिपोर्टिंग 20% भार से नीचे है। हमारे सबसे बड़े प्रतिबंध डिस्क उपयोग था, जिसे हमने कम करने के लिए कई अद्यतनों को लागू किया है। नया सिस्टम अब अक्सर कैश किए गए डेटा पर भरोसा करने के बजाय तुरंत परिणाम वापस कर सकता है, अन्य खिलाड़ियों के बारे में अधिक अद्यतन जानकारी प्रदान करता है और High-Level Architecture of Blitz Server with Rust and ScyllaDB Rust में Elixir Services को फिर से लिखना एक बड़े बैकेंड पुनरावृत्ति के हिस्से के रूप में, ब्लिट्ज़ टीम ने अपनी पूरी बुनियादी ढांचे को फिर से सोचना शुरू कर दिया - पहले वर्णित Postgres से उच्च प्रदर्शन और वितरित ScyllaDB के लिए स्थानांतरण के अलावा। इस डेटाबेस माइग्रेशन के साथ, उन्होंने एक अधिक आधुनिक भाषा के पक्ष में अपने Elixir-आधारित सेवाओं को सोने के लिए चुना. सावधानीपूर्वक मूल्यांकन के बाद, Rust स्पष्ट विकल्प के रूप में दिखाई दिया। अब जब Rust की पहली बैच पुन: लिखने वाली सेवाएं उत्पादन में हैं, तो Naveed और टीम वापस नहीं देख रही हैं: "Rust शानदार है. यह तेजी से है, और कॉपीराइटर आपको बाद में कचरे संग्रह मुद्दों को डिबग करने के बजाय मेमोरी सुरक्षित कोड लिखने के लिए मजबूर करता है. प्रदर्शन सी के समान है, और प्रतिभा पूल भी Elixir की तुलना में बहुत बड़ा है।